
        <html>
			<head>
			     <title>云服务器安全设计 - bt0sea</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/12755">http://drops.wooyun.org/tips/12755</a></h1>
				
      <p>
        <h1>0x00 产品定位</h1>

<hr />

<p>目前越来越多的初创企业把自己的业务系统架设在公有云上，包含：阿里云、Ucloud、青云、华为云和AWS。在云上的安全怎么保证，是目前摆在我们面前的最大问题，因为，互联网公司业务系统在不断迭代，迭代周期最少的有3天，而且架构也不断在改变。在这种频繁改变的过程中，云安全应该怎么保证？，云主机安全服务平台（Cloud security as a service），为多租户提供云主机安全服务的产品，减少用户业务系统攻击面，防止恶意的定向攻击（APT）。造成企业敏感信息泄露等，避免影响企业业务的安全事件的发生。</p>

<!--more-->

<h1>0x01 国外竞争产品分析</h1>

<hr />

<p>目前在云主机安全ToB的国外厂商归纳总结有以下几家：</p>

<table>
<thead>
<tr>
  <th>技术方向</th>
  <th>厂商</th>
</tr>
</thead>
<tbody>
<tr>
  <td>云安全信息和事件管理产品</td>
  <td>Splunk、AlienVault</td>
</tr>
<tr>
  <td>云主机安全产品</td>
  <td>CloudPassage、Illumio、vArmour、FortyCloud</td>
</tr>
<tr>
  <td>私有云服务器安全</td>
  <td>TrendMicro、Symantec、McAfee</td>
</tr>
</tbody>
</table>

<table>
<thead>
<tr>
  <th>厂家</th>
  <th>描述</th>
</tr>
</thead>
<tbody>
<tr>
  <td>Illumio</td>
  <td>自适应安全</td>
</tr>
<tr>
  <td>FortyCloud</td>
  <td>Cloud Network Firewall as a Service</td>
</tr>
<tr>
  <td>vArmour</td>
  <td>利用大数据分析技术，通过扫描进入网络的每一块数据来筛查疑似非法数据并对其进行标记，跟踪。</td>
</tr>
<tr>
  <td>CloudPassage</td>
  <td>服务器的安全配置管理、托管防火墙管理、入侵检测、服务器账号审计、事件报告与告警</td>
</tr>
<tr>
  <td>Splunk</td>
  <td>从海量机器数据中提取有价值的信息，并进行实时分析和展现</td>
</tr>
<tr>
  <td>AlienVault</td>
  <td>为客户提供SIEM解决方案。同时，AlienVault结合众包威胁情报平台提供了一个混合威胁管理解决方案。</td>
</tr>
<tr>
  <td>TrendMicro,McAfee,Symantec</td>
  <td>VMware、Hyper-v、Linux KVM私有云虚拟机安全解决方案</td>
</tr>
</tbody>
</table>

<h1>0x02 产品目标</h1>

<hr />

<p>针对互联网金融中小企业用户。获取用户改进产品，互联网金融目标用户行业分析如下：</p>

<table>
<thead>
<tr>
  <th>业务模式名称</th>
  <th>业务模式详细描述</th>
  <th>代表企业：安全业务需求</th>
</tr>
</thead>
<tbody>
<tr>
  <td>第三方支付企业模式</td>
  <td>第三方支付企业指在收付款人之间作为中介机构提供网络支付、预付卡发行预受理、银行卡收单以及其他支付服务的非金融机构</td>
  <td>支付宝、易宝支付、拉卡拉、财付通为代表的互联网支付企业，快钱、汇付天下为代表的金融型支付企业。</td>
</tr>
<tr>
  <td>P2P网络小额信贷模式</td>
  <td>通过P2P网络融资平台，借款人直接发布借款信息，出借人了解对方的身份信息、信用信息后，可以直接与借款人签署借贷合同，提供小额贷款，并能及时获知借款人的还款进度，获得投资回报。</td>
  <td>代表企业：美国的prosper和lendingclubP2P公司，国内的人人贷、拍拍贷、红岭创投等 陆金所</td>
</tr>
<tr>
  <td>众筹融资模式</td>
  <td>所谓众筹平台，是指创意人向公众募集小额资金或其他支持，再将创意实施结果反馈给出资人的平台。网站为网友提供发起筹资创意，整理出资人信息，公开创意实施结果的平台，以与筹资人分成为主要赢利模式</td>
  <td>代表企业：国外最早和最知名的平台是kickstarter，国内有点名时间、众筹网、淘梦网等 京东众筹、人人投、追梦网、大家投</td>
</tr>
<tr>
  <td>虚拟电子货币模式</td>
  <td>虚拟货币是一种计算机运算产生或者网络社区发行管理的网络虚拟货币，可以用来购买一些虚拟的物品，比如网络游戏当中的衣服、帽子、装备等，只要有人接受，也可以使用像比特币这样的虚拟货币购买现实生活当中的物品。</td>
  <td>代表企业：国外的比特币、亚马逊币、Facebook币，国内的Q币等。</td>
</tr>
<tr>
  <td>基于大数据的金融服务平台模式</td>
  <td>通过打造类似去哪儿这样的金融产品垂直搜索引擎的方式，把有借款需求的个人和有放款需要的中小银行和小贷机构在一个平台上进行对接；然后通过广告费或者交易佣金的方式获得收入。</td>
  <td>代表企业：国外的Bankrate（银率网），国内的融360、好贷网、金融界理财等</td>
</tr>
<tr>
  <td>互联网银行模式（Internet bank or E-bank）</td>
  <td>借助现代数字通信、互联网、移动通信及物联网技术，通过云计算、大数据等方式在线实现为客户提供存款、贷款、支付、结算、汇转、电子票证、电子信用、账户管理、货币互换、P2P金融、投资理财、金融信息等全方位无缝、快捷、安全和高效的互联网金融服务机构。互联网银行的便利性、高效性将给传统银行带来较大的挑战</td>
  <td></td>
</tr>
<tr>
  <td>互联网理财</td>
  <td>通过互联网进行更高效的更便捷的钱生钱的事业</td>
  <td>铜板街、格上理财、招财宝 - 蚂蚁金服、积木盒子、火球</td>
</tr>
</tbody>
</table>

<h1>0x03 市场机会</h1>

<hr />

<h3>3.1 我们的机会在哪里</h3>

<p>国内云主机安全服务平台有以下几家：</p>

<table>
<thead>
<tr>
  <th>厂商名称</th>
  <th>产品介绍</th>
</tr>
</thead>
<tbody>
<tr>
  <td>乌云唐朝巡航</td>
  <td>借助众测试等社区运营模式产生的云主机安全解决方案，主要是及时响应服务器安全漏洞。</td>
</tr>
<tr>
  <td>阿里云盾</td>
  <td>DDoS防护，主机入侵防护，以及漏洞检测、木马检测等一整套安全服务</td>
</tr>
<tr>
  <td>安全狗</td>
  <td>基于主机WAF 和anti-DDoS功能</td>
</tr>
<tr>
  <td>知道创宇</td>
  <td>加速乐、云安全监控平台、ZoomEye大数据安全扫描平台</td>
</tr>
<tr>
  <td>百度安全宝</td>
  <td>云WAF企业版、DDoS云防护、应急响应</td>
</tr>
<tr>
  <td>青藤云安全</td>
  <td>自适应安全理念的产品化的国内第一家厂商</td>
</tr>
</tbody>
</table>

<p>面对这些公司的竞争，我们的竞争力在于获得种子用户，完全开源的策略。提供安全运维服务。二次开发等服务。</p>

<h3>3.2 如何成功？</h3>

<p>支持云方式部署方式，快速获取用户。免费安装模式。</p>

<p>如果用户打算使用我们的解决方案，可以独立部署或者开放源代码。</p>

<p>KPI考核</p>

<p>统计安装用户数量、留存率，月付费用户转化率。免费用户</p>

<h3>3.3 项目里程碑</h3>

<p><img src="http://static.wooyun.org//drops/20160214/2016021407003838200117.jpg" alt="p1" /></p>

<h1>0x04 产品功能详细架构设计（Product Proposal）</h1>

<h3>4.1 产品定位</h3>

<p>通过以上国内外云安全公司产品分析，我认为云主机安全平台需要具备以下四个大功能模块。</p>

<p><img src="http://static.wooyun.org//drops/20160214/201602140700402487727.jpg" alt="p2" /></p>

<p>开发的优先级如下：</p>

<ol>
<li>基于日志大数据收集分析平台（P1）</li>
<li>基于基于Agent收集云主机相关精确的安全信息 （P2） 本模块需要大量的开发人员完成，如果获得天使轮融资后可以开发。</li>
<li>威胁情报模块（P2） 威胁情报这部分可以对接国内的威胁情报系统 例如：微步等。</li>
<li>SDN网络安全防火墙模块（P2）防火墙模块目前还需要做更多的研究才能集成，建议使用linux主机上自带iptable实现。</li>
</ol>

<h3>4.2、产品功能详细设计</h3>

<p>针对P1需要完成的功能，建立基于大数据分析平台，防范APT攻击。产品概念设计可以 为：基于日志的态势感知功能。</p>

<p><img src="http://static.wooyun.org//drops/20160214/201602140700411333036.jpg" alt="p3" /></p>

<p>处理Web日志数据结构如下：</p>

<p><img src="http://static.wooyun.org//drops/20160214/201602140700436673846.jpg" alt="p4" /></p>

<p>所选择的实现技术手段：</p>

<p><img src="http://static.wooyun.org//drops/20160214/201602140700444508056.jpg" alt="p5" /></p>

<p>由于前期数据量没有到达一定的数量级，可以使用传统的关系型数据实现。当然如果本系统应用到大公司的时候可以迭代技术架构、hadoop或者storm来解决问题。</p>

<p>业务流程图：</p>

<p><img src="http://static.wooyun.org//drops/20160214/201602140700467897666.jpg" alt="p6" /></p>

<p>核心界面设计：通过visio原型图表现。</p>

<p>核心界面首先，要画出原型图，那么，和用户接触最多的是web前端，所以，设计要精致。</p>

<p>（1）Web前端</p>

<p>Web前端分为四大功能模块</p>

<ol>
<li>Dashboard：显示攻击类型和攻击源</li>
<li>Analysis：图形化分析详细的攻击方式</li>
<li>Reporting： 以数据形式展示攻击类型、攻击源和详细攻击方式</li>
<li>Configuration：参数配置（非核心模块就不展示了）</li>
</ol>

<p><img src="http://static.wooyun.org//drops/20160214/201602140700474756975.jpg" alt="p7" /></p>

<p><img src="http://static.wooyun.org//drops/20160214/201602140700499292884.jpg" alt="p8" /></p>

<p><img src="http://static.wooyun.org//drops/20160214/201602140700512461893.jpg" alt="p9" /></p>

<p>（2）Web管理后台</p>

<p><img src="http://static.wooyun.org//drops/20160214/2016021407005490606103.jpg" alt="p10" /></p>

<p>交互流程设计：正常应该通过Axure动画表现，由于本次设计不是特别复杂，只是几个功能模块的切换就不画交换流程图了。</p>

<h1>0x05 产品技术架构设计</h1>

<hr />

<p>由于目前产品设计需要考虑高扩展性，所以技术选型大致如下：</p>

<p><img src="http://static.wooyun.org//drops/20160214/2016021407005574406118.jpg" alt="p11" /></p>

<h1>0x06 Demo搭建</h1>

<hr />

<p>根据技术选型后，需要建立Demo 环境技术难点集中在服务器端和Web后端。那么下面说明一下这两部分搭建：</p>

<h3>6.1 服务器端</h3>

<table>
<thead>
<tr>
  <th>组件名称</th>
  <th>详细描述</th>
</tr>
</thead>
<tbody>
<tr>
  <td>操作系统</td>
  <td>Centos 6.7 Final</td>
</tr>
<tr>
  <td>Web前端服务器</td>
  <td>Nginx/1.8.1</td>
</tr>
<tr>
  <td>Web服务器</td>
  <td>Django/1.7</td>
</tr>
<tr>
  <td>Python解析器</td>
  <td>uwsgi</td>
</tr>
<tr>
  <td>Python语言</td>
  <td>Python 2.7.10</td>
</tr>
<tr>
  <td>Restful API架构</td>
  <td>Tastypie</td>
</tr>
</tbody>
</table>

<p>看到这个架构其实很多小朋友会问为啥要这么设计，太繁琐了？其实设计原则主要是为了将来的扩展性。Web前端服务器：本系统是一个公有云安全平台，用户量将来要不断的增加，使用Nginx可以做到横向扩展。</p>

<p><strong>6.1.1 Nginx安装部署</strong></p>

<p>Nginx部署过程：</p>

<ol>
<li><code>rpm -ivh</code><br />
<code>http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm</code></li>
<li><code>yum -y install nginx</code></li>
<li><code>service nginx restart</code></li>
<li><code>chkconfig nginx on</code></li>
</ol>

<p>配置nginx<br />
在/etc/nginx/conf.d/中增加MyPythonServer.conf，内容如下：</p>

<pre><code>#!bash
http {
    #负载均衡
    upstream production_site{
        server web1.xxx.com:8080 weight=6 max_fails=3 fail_timeout=20s;
        server web2.xxx.com:8080 weight=3 max_fails=3 fail_timeout=20s;
        server web3.xxx.com:8080 weight=7 max_fails=3 fail_timeout=20s;
        server web4.xxx.com:8080 weight=8 max_fails=3 fail_timeout=20s;
    }

    server {
    listen      8090;
    server_name web1.xxx.com,web2.xxx.com,web3.xxx.com,web4.xxx.com;
    charset     utf-8;

    client_max_body_size 75M;

    location / {
        uwsgi_pass  django;
        include     uwsgi_params;
    }
}
</code></pre>

<p><strong>6.1.2 Django&amp;uwsgi安装配置</strong></p>

<pre><code>#!bash
[<a class="__cf_email__" href="/cdn-cgi/l/email-protection" data-cfemail="2d5f4242596d41424e4c4145425e59">[email&#160;protected]</a><script data-cfhash='f9e31' type="text/javascript">/* <![CDATA[ */!function(t,e,r,n,c,a,p){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-cfhash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-cfemail')){for(e='',r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2)e+='%'+('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */</script> venv]# pip install Django
安装uWSGI
[<a class="__cf_email__" href="/cdn-cgi/l/email-protection" data-cfemail="8cfee3e3f8cce0e3efede0e4e3fff8">[email&#160;protected]</a><script data-cfhash='f9e31' type="text/javascript">/* <![CDATA[ */!function(t,e,r,n,c,a,p){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-cfhash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-cfemail')){for(e='',r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2)e+='%'+('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */</script> venv]# pip install uwsgi

[uwsgi]
home=/data/Mydata/env
chdir=/data/Mydata/
uid=root
gid=root
wsgi-file=/data/Mydata/wsgi.py
socket=127.0.0.1:8001
master=true
workers=8
pidfile=/data/Mydata/uwsgi.pid
vacuum=true
thunder-lock=true
enable-threads=true
harakiri=30
post-buffering=4096
daemonize=/data/Mydata/uwsgi.log
logger=file:/data/Mydata/uwsgi.log
</code></pre>

<h3>6.2 Web后端</h3>

<p><strong>6.2.1 Php-fpm安装</strong></p>

<p>nginx 安装忽略</p>

<pre><code>#!bash
cd /usr/local/src/ 
wget http://php.net/distributions/php-5.6.8.tar.gz
tar --zxvf  php-5.6.8.tar.gz

yum install -y libxml2 libxml2-devel openssl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libmcrypt libmcrypt-devel mcrypt mhash


./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc --enable-fpm --disable-ipv6 --enable-pdo --with-pdo-mysql --with-openssl --with-mcrypt --with-mhash --enable-json --enable-mbstring --with-gd --with-openssl-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-native-ttf --enable-gd-jis-conv --enable-zip


make 
make install

cp /usr/local/php5/etc/php-fpm.conf.default   /usr/local/php5/etc/php-fpm.conf

cp /usr/local/src/php-5.6.8/sapi/fpm/init.d.php-fpm /usr/local/php5/sbin/ cd /usr/local/php5/sbin/ 
chmod 755 init.d.php-fpm ./init.d.php-fpm start 
Starting php-fpm done
</code></pre>

<p>配置Nginx来支持PHP</p>

<pre><code>#!bash
cd /etc/nginx/
vi nginx.conf
#打开gzip
gzip    on;
</code></pre>

<p>配置vhost，假设域名为www.xxx.com</p>

<pre><code>#!bash
cd /etc/nginx/conf.d/
vi www.xxx.com.conf
#内容如下
server {
        listen 80;
        server_name www.xxx.com xxx.com;

        location / {
                #开启ssi支持shtml
                ssi on;
                ssi_silent_errors on;
                ssi_types text/shtml;
                index index.shtml index.php index.htm index.html;
                root /data/www/www.xxx.com;
                #框架路由设置
                if ( !-e $request_filename ) {
                        rewrite ^(.*)$ /index.php?url=$1 last;
                }
        }

        location ~.php$ {
                root /data/www/www.xxx.com;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

        location ~.(jpg|jpeg|png|js|css) {
                root /data/www/www.xxx.com;
                expires 30d;
        }

}
</code></pre>

<p>测试一下 配置文件是否有错误</p>

<pre><code>#!bash
/etc/init.d/nginx configtest
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
</code></pre>

<p>新建info.php测试文件，内容为</p>

<pre><code>#!php
&lt;?php
phpinfo();
?&gt;
</code></pre>

<p>然后:</p>

<pre><code>#!bash
vim /etc/hosts

127.0.0.1  www.xxx.com

cd /usr/local/src/php-5.6.8
cp php.ini-production /usr/local/php5/etc/php.ini
</code></pre>

<p>至此nginx+php-fpm设置完成。</p>

<p><strong>6.2.2 Mysql扩展安装</strong></p>

<pre><code>#!bash
yum install mysql-devel
</code></pre>

<p>由于之前没有安装mysql服务,也没有安装php的mysql扩展，用是PDO方式，为适应老版本的joomla程序，再添加mysql.so扩展</p>

<p>方法如下：</p>

<p>1、进入php源代码目录：</p>

<pre><code>#!bash
cd /usr/local/src/php-5.6.8/ext
cd mysql
yum install autoconf
</code></pre>

<p>调用已经编译好的php可执行程序phpize,phpize是用来扩展php扩展模块的，通过phpize可以建立php的外挂模块</p>

<p>phpize的规则：去哪个目录下运行phpize文件，那么就会在该目录下生成一个configure文件。</p>

<pre><code>#!bash
/usr/local/php5/bin/phpize
./configure --with-php-config=/usr/local/php5/bin/php-config --with-mysql --with-zlib-dir=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/

make &amp;&amp; make install
</code></pre>

<p>完成后，可以看到no-debug-non-zts-20131226目录下生成了mysql.so文件</p>

<p>修改php.ini,去掉<code>;extension=php_mysql.so</code>前面的分号。将<code>php_mysql.so</code>改成我们生成的<code>mysql.so</code>。</p>

<p>重启<code>php-fpm</code>后可以从phpinfo看到mysql扩展已经生效。</p>

<p><strong>6.2.3 Yaf扩展安装</strong></p>

<pre><code>#!bash
wget https://github.com/laruence/yaf/archive/master.zip
unzip master.zip
./configure --with-php-config=/usr/local/php5/bin/php-config
make &amp;&amp; make install

vim /usr/local/php5/etc/php.ini
extension=yaf.so
</code></pre>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          